home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / asmbler.arc / MORE.ASM < prev    next >
Assembly Source File  |  1988-11-19  |  3KB  |  120 lines

  1. CTRLZ   EQU     26
  2. CR      EQU     13
  3. LF      EQU     10
  4. BS      EQU     8
  5. TAB     EQU     9
  6. BEL     EQU     7
  7.  
  8. ASSUME  CS:MOREC,DS:MOREC,ES:MOREC,SS:MOREC
  9. MOREC   SEGMENT PARA PUBLIC 'CODE'
  10.  
  11.         ORG     100H
  12. MORE:   MOV     AH,30H
  13.         INT     21H
  14.         XCHG    AH,AL
  15.         CMP     AX,0200H        ; DOS 2.00 ??
  16.         JNB     CONT
  17.         MOV     DX,OFFSET BADDOS
  18.         MOV     AH,09H          ; PRINT STRING
  19.         INT     21H
  20.         INT     20H             ; TERMINATE
  21.  
  22. CONT:   MOV     BYTE PTR NUMROWS,25
  23.         MOV     AH,0FH
  24.         INT     10H
  25.         MOV     NUMCOLS,AH
  26.         MOV     DX,OFFSET CRLF
  27.         MOV     AH,09H          ; PRINT STRING
  28.         INT     21H
  29.         XOR     BX,BX
  30.         MOV     AH,45H          ; DUP HANDLE
  31.         INT     21H
  32.         MOV     BP,AX
  33.         MOV     AH,3EH          ; CLOSE HANDLE
  34.         INT     21H
  35.         MOV     BX,2
  36.         MOV     AH,45H          ; DUP HANDLE
  37.         INT     21H
  38.  
  39. NEXTBF: CLD
  40.         MOV     DX,OFFSET BUFFER
  41.         MOV     CX,4096
  42.         MOV     BX,BP
  43.         MOV     AH,3FH          ; READ HANDLE
  44.         INT     21H
  45.         OR      AX,AX
  46.         JNZ     GOTCH
  47. EXIT:   INT     20H             ; TERMINATE
  48. GOTCH:  MOV     CX,AX
  49.         MOV     SI,DX
  50. NEXTCH: LODSB
  51.         CMP     AL,CTRLZ
  52.         JZ      EXIT
  53.         CMP     AL,CR
  54.         JNZ     NOCR
  55.         MOV     BYTE PTR COLNUM,1
  56.         JMP     SHORT PRINTCH
  57. NOCR:   CMP     AL,LF
  58.         JNZ     NOLF
  59.         INC     ROWNUM
  60.         JMP     SHORT PRINTCH
  61. NOLF:   CMP     AL,BS
  62.         JNZ     NOBS
  63.         CMP     BYTE PTR COLNUM,1
  64.         JZ      PRINTCH
  65.         DEC     COLNUM
  66.         JMP     SHORT PRINTCH
  67. NOBS:   CMP     AL,TAB
  68.         JNZ     NOTAB
  69.         MOV     AH,COLNUM
  70.         ADD     AH,7
  71.         AND     AH,NOT 7
  72.         INC     AH
  73.         MOV     COLNUM,AH
  74.         JMP     SHORT PRINTCH
  75. NOTAB:  CMP     AL,BEL
  76.         JZ      PRINTCH
  77.         INC     COLNUM
  78.         MOV     AH,COLNUM
  79.         CMP     AH,NUMCOLS
  80.         JBE     PRINTCH
  81.         INC     ROWNUM
  82.         MOV     BYTE PTR COLNUM,1
  83. PRINTCH:MOV     DL,AL
  84.         MOV     AH,02H          ; PRINT CHAR
  85.         INT     21H
  86.         MOV     AH,ROWNUM
  87.         CMP     AH,NUMROWS
  88.         JB      LOOPCH
  89.         MOV     DX,OFFSET MORSTR
  90.         MOV     AH,09H          ; PRINT STRING
  91.         INT     21H
  92.         MOV     AH,0CH          ; CLEAR INPUT BUFFER AND
  93.         MOV     AL,01H          ;    KEYBOARD INPUT
  94.         INT     21H
  95.         MOV     DX,OFFSET CRLF
  96.         MOV     AH,09H          ; PRINT STRING
  97.         INT     21H
  98.         MOV     BYTE PTR COLNUM,1
  99.         MOV     BYTE PTR ROWNUM,1
  100.         DEC     SI
  101.         INC     CX
  102. LOOPCH: DEC     CX
  103.         JZ      LONGBF
  104.         JMP     NEXTCH
  105. LONGBF: JMP     NEXTBF
  106.  
  107. NUMROWS DB      24
  108. NUMCOLS DB      80
  109. ROWNUM  DB      01
  110. COLNUM  DB      01
  111.         DB      00H,00H,00H,00H,00H
  112. MORSTR  DB      CR,"-- More --$"
  113. BADDOS  DB      "MORE: Incorrect DOS version"
  114. CRLF    DB      CR,LF,"$"
  115.  
  116. BUFFER  DB      102 DUP (0)
  117.  
  118. MOREC   ENDS
  119.         END     MORE
  120.